package com.zmn.oms.persistence.interfaces.chan;

import com.zmn.oms.model.entity.chan.OrderClue;
import org.apache.ibatis.annotations.Param;

/**
 * 类描述：
 *
 * @author lhl
 * @date 2020-11-26 21:33:25
 */
public interface OrderClueDAO {

    /**
     * 使用主键查询
     * @param key
     * @return
     */
    OrderClue findByKey(@Param("id") Long key);

    /**
     * 使用对接接口ID和渠道订单ID查询
     * @param facadeId
     * @param outerId
     * @param channelId
     * @return
     */
    OrderClue findByFacadeIdAndOuterId(@Param("facadeId") Integer facadeId,
                                       @Param("outerId") String outerId,
                                       @Param("channelId") Integer channelId);

    /**
     * 使用返回给渠道方的啄木鸟订单ID查询
     * @param facadeOrderId
     * @return
     */
    OrderClue findByFacadeOrderId(@Param("facadeOrderId") Long facadeOrderId);

    /**
     * 使用系统中对应的的订单ID查询
     * @param zmnOrderId
     * @return
     */
    OrderClue findByZmnOrderId(@Param("zmnOrderId") Long zmnOrderId);

    /**
     * 新增，自动生成主键并填充到参数对象对应的字段中
     * @param orderClue
     * @return
     */
    int insert(OrderClue orderClue);

    /**
     * 保存啄木鸟订单号
     * @param id
     * @param zmnOrderId
     * @return
     */
    int updateZmnOrderIdByKey(@Param("id") Long id, @Param("zmnOrderId")Long zmnOrderId, @Param("state") Integer state);

    /**
     * 通过主键修改状态
     * @param id
     * @param state
     * @return
     */
    int updateStateByKey(@Param("id") Long id, @Param("state")Integer state);

    /**
     * 通过主键修改消息编号
     * @param orderClue
     * @return
     */
    int updateMessageNoByKey(OrderClue orderClue);
}
